home *** CD-ROM | disk | FTP | other *** search
/ QuickTime - The Beta Release / QuickTime - The Beta Release.iso / Programming Stuff / Interfaces / Movies Interfaces / Movies.h < prev    next >
Text File  |  1991-09-11  |  40KB  |  1,253 lines

  1.  
  2. /************************************************************
  3.  
  4. Created: Wednesday, August 14, 1991 at 12:23 PM
  5.  Movies.h
  6.  C Interface to the Macintosh Libraries
  7.  
  8.  
  9.   Copyright Apple Computer, Inc. 1991
  10.   All rights reserved
  11.  
  12. ************************************************************/
  13.  
  14.  
  15. #ifndef __MOVIES__
  16. #define __MOVIES__
  17.  
  18. #ifndef __QUICKDRAW__
  19. #include <QuickDraw.h>
  20. #endif
  21.  
  22. #ifndef __ALIASES__
  23. #include <Aliases.h>
  24. #endif
  25.  
  26. #ifndef __EVENTS__
  27. #include <Events.h>
  28. #endif
  29.  
  30. #ifndef __COMPONENTS__
  31. #include <Components.h>
  32. #endif
  33.  
  34. #ifndef __IMAGECOMPRESSION__
  35. #include <ImageCompression.h>
  36. #endif
  37.  
  38. #ifndef __STANDARDFILE__
  39. #include <StandardFile.h>
  40. #endif
  41.  
  42.  
  43.  
  44. #define gestaltQuickTime 'qtim'
  45.  
  46. #define MovieFileType 'MooV'
  47.  
  48. #define VideoMediaType 'vide'
  49. #define SoundMediaType 'soun'
  50.  
  51. #define DoTheRightThing 0L
  52.  
  53. struct MovieRecord {
  54.  long data[1];
  55. };
  56.  
  57. typedef struct MovieRecord MovieRecord;
  58. typedef MovieRecord *Movie;
  59.  
  60. struct TrackRecord {
  61.  long data[1];
  62. };
  63.  
  64. typedef struct TrackRecord TrackRecord;
  65. typedef TrackRecord *Track;
  66.  
  67. struct MediaRecord {
  68.  long data[1];
  69. };
  70.  
  71. typedef struct MediaRecord MediaRecord;
  72. typedef MediaRecord *Media;
  73.  
  74. struct UserDataRecord {
  75.  long data[1];
  76. };
  77.  
  78. typedef struct UserDataRecord UserDataRecord;
  79. typedef UserDataRecord *UserData;
  80.  
  81. struct TrackEditStateRecord {
  82.  long data[1];
  83. };
  84.  
  85. typedef struct TrackEditStateRecord TrackEditStateRecord;
  86. typedef TrackEditStateRecord *TrackEditState;
  87.  
  88. struct MovieEditStateRecord {
  89.  long data[1];
  90. };
  91.  
  92. typedef struct MovieEditStateRecord MovieEditStateRecord;
  93. typedef MovieEditStateRecord *MovieEditState;
  94.  
  95.  
  96. typedef long TimeValue;
  97. typedef long TimeScale;
  98.  
  99. struct TimeBaseRecord {
  100.  long data[1];
  101. };
  102.  
  103. typedef struct TimeBaseRecord TimeBaseRecord;
  104. typedef TimeBaseRecord *TimeBase;
  105.  
  106. struct CallBackRecord {
  107.  long data[1];
  108. };
  109.  
  110. typedef struct CallBackRecord CallBackRecord;
  111. typedef CallBackRecord *QTCallBack;
  112.  
  113.  
  114. struct Int64 {
  115.  long hi;
  116.  long lo;
  117. };
  118.  
  119. typedef struct Int64 Int64;
  120.  
  121. struct TimeRecord {
  122.  Int64 value;
  123.  TimeScale scale;
  124.  TimeBase base;
  125. };
  126.  
  127. typedef struct TimeRecord TimeRecord;
  128.  
  129. struct PriorityType {
  130.  unsigned short level;
  131.  unsigned short percent;
  132. };
  133.  
  134. typedef struct PriorityType PriorityType;
  135.  
  136. struct SampleDescription {
  137.  long descSize;
  138.  long dataFormat;
  139. };
  140.  
  141. typedef struct SampleDescription SampleDescription;
  142. typedef SampleDescription *SampleDescriptionPtr, **SampleDescriptionHandle;
  143.  
  144. struct SoundDescription {
  145.  long descSize;
  146.  long dataFormat;
  147.  long resvd1;
  148.  long resvd2;
  149.  short version;
  150.  short revlevel;
  151.  long vendor;
  152.  short numChannels;
  153.  short sampleSize;
  154.  short compressionID;
  155.  short packetSize;
  156.  Fixed sampleRate;
  157. };
  158.  
  159. typedef struct SoundDescription SoundDescription;
  160. typedef SoundDescription *SoundDescriptionPtr, **SoundDescriptionHandle;
  161.  
  162.  
  163. enum {movieProgressOpen = 0,movieProgressUpdatePercent = 1,movieProgressClose = 2};
  164. typedef unsigned char movieProgressMessages;
  165.  
  166. enum {progressOpFlatten = 1,progressOpInsertTrackSegment = 2,progressOpInsertMovieSegment = 3,
  167.  progressOpPaste = 4,progressOpAddMovieSelection = 5,progressOpCopy = 6,
  168.  progressOpCut = 7,progressOpLoadMovieIntoRam = 8,progressOpLoadTrackIntoRam = 9,
  169.     progressOpLoadMediaIntoRam = 10};
  170. typedef unsigned char movieProgressOperations;
  171.  
  172.  
  173.  
  174.  
  175. typedef pascal Boolean  (*MovieProgressProcPtr) (Movie m, short message, short whatOperation,
  176.            Fixed percentDone, long refCon);        
  177.  
  178. typedef pascal OSErr (*MovieRgnCoverProc)(Movie m, RgnHandle changedRgn, long refcon);  
  179.  
  180. typedef Handle MediaInformationHandle;
  181. typedef ComponentInstance MediaHandler;
  182. typedef ComponentInstance DataHandler;
  183. typedef ComponentResult HandlerError;
  184. typedef ComponentInstance MovieController;
  185.  
  186. typedef pascal void (*ErrorProcPtr)(OSErr theErr, long refcon);        
  187.  
  188. typedef pascal Boolean (*MoviePreviewCallOutProc)(long refcon);        
  189.  
  190.  
  191. enum {newMovieActive = 1<<0,newMovieDontResolveDataRefs = 1<<1,newMovieDontAskUnresolvedDataRefs = 1<<2};
  192. typedef unsigned char newMovieFlagsEnum;
  193.  
  194. enum {trackUsageInMovie = 1<<1,trackUsageInPreview = 1<<2,trackUsageInPoster = 1<<3};
  195. typedef unsigned char trackUsageEnum;
  196.  
  197. enum {mediaSampleNotSync = 1};
  198. typedef unsigned char mediaSampleFlagsEnum;
  199.  
  200. enum {nextTimeMediaSample = 1<<0,nextTimeMediaEdit = 1<<1,nextTimeTrackEdit = 1<<2,
  201.  nextTimeSyncSample = 1<<3,nextTimeEdgeOK = 1<<14,nextTimeIgnoreActiveSegment = 1<<15};
  202. typedef unsigned short nextTimeFlagsEnum;
  203.  
  204. enum {createMovieFileDeleteCurFile = 1L<<31,createMovieFileDontCreateMovie = 1L<<30,
  205.  createMovieFileDontOpenFile = 1L<<29};
  206. typedef unsigned long createMovieFileFlagsEnum;
  207.  
  208. enum {flattenAddMovieToDataFork = 1L<<0,flattenActiveTracksOnly = 1L<<2,
  209.  flattenDontInterleaveFlatten = 1L<<3};
  210. typedef unsigned char movieFlattenFlagsEnum;
  211.  
  212. enum {movieScrapDontZeroScrap = 1<<0,movieScrapOnlyPutMovie = 1<<1};
  213. typedef unsigned char movieScrapFlagsEnum;
  214.  
  215. enum {hintsScrubMode = 1<<0};
  216. typedef unsigned char playHintsEnum;
  217.  
  218.  
  219.  
  220.  
  221.  
  222.  
  223. #ifdef __cplusplus
  224. extern "C" {
  225. #endif
  226. /*  Initialization Routines  */
  227. pascal OSErr EnterMovies(void)
  228.  = {0x303C,0x1,0xAAAA}; 
  229. pascal void ExitMovies(void)
  230.  = {0x303C,0x2,0xAAAA}; 
  231.  
  232. /*  error Routines  */
  233. pascal OSErr GetMoviesError(void)
  234.  = {0x303C,0x3,0xAAAA}; 
  235. pascal void ClearMoviesStickyError(void)
  236.  = {0x303C,0xDE,0xAAAA}; 
  237. pascal OSErr GetMoviesStickyError(void)
  238.  = {0x303C,0x4,0xAAAA}; 
  239.  
  240. pascal void SetMoviesErrorProc(ErrorProcPtr errProc,long refcon)
  241.  = {0x303C,0xEF,0xAAAA}; 
  242.  
  243. pascal ComponentResult GetTrackStatus(Track t)
  244.  = {0x303C,0x172,0xAAAA}; 
  245. pascal ComponentResult GetMovieStatus(Movie m,Track *firstProblemTrack)
  246.  = {0x303C,0x173,0xAAAA}; 
  247.  
  248. /*  Playback Routines  */
  249. pascal void MoviesTask(Movie m,long maxMilliSecToUse)
  250.  = {0x303C,0x5,0xAAAA}; 
  251.  
  252. pascal void StartMovie(Movie m)
  253.  = {0x303C,0xB,0xAAAA}; 
  254. pascal void StopMovie(Movie m)
  255.  = {0x303C,0xC,0xAAAA}; 
  256. pascal void GotoBeginningOfMovie(Movie m)
  257.  = {0x303C,0xD,0xAAAA}; 
  258. pascal void GotoEndOfMovie(Movie m)
  259.  = {0x303C,0xE,0xAAAA}; 
  260. pascal Boolean IsMovieDone(Movie m)
  261.  = {0x303C,0xDD,0xAAAA}; 
  262.  
  263. pascal Boolean GetMoviePreviewMode(Movie m)
  264.  = {0x303C,0xF,0xAAAA}; 
  265. pascal void SetMoviePreviewMode(Movie m,Boolean usePreview)
  266.  = {0x303C,0x10,0xAAAA}; 
  267. pascal void ShowMoviePoster(Movie m)
  268.  = {0x303C,0x11,0xAAAA}; 
  269.  
  270. pascal void GetMoviePriority(Movie m,PriorityType *priority)
  271.  = {0x303C,0x13,0xAAAA}; 
  272. pascal void SetMoviePriority(Movie m,const PriorityType *priority)
  273.  = {0x303C,0x14,0xAAAA}; 
  274.  
  275. pascal void GetMovieGWorld(Movie m,CGrafPtr *port,GDHandle *gdh)
  276.  = {0x303C,0x15,0xAAAA}; 
  277. pascal void SetMovieGWorld(Movie m,CGrafPtr port,GDHandle gdh)
  278.  = {0x303C,0x16,0xAAAA}; 
  279.  
  280. pascal OSErr PrerollMovie(Movie m,TimeValue time,Fixed Rate)
  281.  = {0x303C,0x6,0xAAAA}; 
  282. pascal OSErr LoadMovieIntoRam(Movie m,TimeValue time,TimeValue duration,
  283.  long flags)
  284.  = {0x303C,0x7,0xAAAA}; 
  285. pascal OSErr LoadTrackIntoRam(Track t,TimeValue time,TimeValue duration,
  286.  long flags)
  287.  = {0x303C,0x16E,0xAAAA}; 
  288. pascal OSErr LoadMediaIntoRam(Media m,TimeValue time,TimeValue duration,
  289.  long flags)
  290.  = {0x303C,0x8,0xAAAA}; 
  291.  
  292. pascal void SetMovieActive(Movie m,Boolean active)
  293.  = {0x303C,0x9,0xAAAA}; 
  294. pascal Boolean GetMovieActive(Movie m)
  295.  = {0x303C,0xA,0xAAAA}; 
  296.  
  297. pascal void PlayMoviePreview(Movie m,MoviePreviewCallOutProc callOutProc,
  298.  long refcon)
  299.  = {0x303C,0xF2,0xAAAA}; 
  300.  
  301. /*  Movie PICT Routines  */
  302. pascal PicHandle GetMoviePict(Movie m,TimeValue time)
  303.  = {0x303C,0x1D,0xAAAA}; 
  304. pascal PicHandle GetTrackPict(Track t,TimeValue time)
  305.  = {0x303C,0x1E,0xAAAA}; 
  306.  
  307. pascal PicHandle GetMoviePosterPict(Movie m)
  308.  = {0x303C,0xF7,0xAAAA}; 
  309.  
  310. /*  movie TimeBase Routines  */
  311. pascal TimeBase GetMovieTimeBase(Movie m)
  312.  = {0x303C,0x12,0xAAAA}; 
  313.  
  314. pascal void SetMovieMasterTimeBase(Movie m,TimeBase tb,const TimeRecord *slaveZero)
  315.  = {0x303C,0x167,0xAAAA}; 
  316. pascal void SetMovieMasterClock(Movie m,Component clockMeister,const TimeRecord *slaveZero)
  317.  = {0x303C,0x168,0xAAAA}; 
  318.  
  319. /*  spatial movie Routines  */
  320. pascal void GetMovieBox(Movie m,Rect *boxRect)
  321.  = {0x303C,0xF9,0xAAAA}; 
  322. pascal void SetMovieBox(Movie m,const Rect *boxRect)
  323.  = {0x303C,0xFA,0xAAAA}; 
  324.  
  325. /*  movie display clip  */
  326. pascal RgnHandle GetMovieDisplayClipRgn(Movie m)
  327.  = {0x303C,0xFC,0xAAAA}; 
  328. pascal void SetMovieDisplayClipRgn(Movie m,RgnHandle theClip)
  329.  = {0x303C,0xFD,0xAAAA}; 
  330.  
  331. /*  movie src clip  */
  332. pascal RgnHandle GetMovieSrcClipRgn(Movie m)
  333.  = {0x303C,0x100,0xAAAA}; 
  334. pascal void SetMovieSrcClipRgn(Movie m,RgnHandle theClip)
  335.  = {0x303C,0x101,0xAAAA}; 
  336.  
  337. /*  track src clip  */
  338. pascal RgnHandle GetTrackSrcClipRgn(Track t)
  339.  = {0x303C,0x102,0xAAAA}; 
  340. pascal void SetTrackSrcClipRgn(Track t,RgnHandle theClip)
  341.  = {0x303C,0x103,0xAAAA}; 
  342.  
  343. /*  bounds in display space  */
  344. pascal RgnHandle GetMovieDisplayBoundsRgn(Movie m)
  345.  = {0x303C,0xFB,0xAAAA}; 
  346. pascal RgnHandle GetTrackMovieDisplayBoundsRgn(Track t)
  347.  = {0x303C,0x112,0xAAAA}; 
  348.  
  349. /*  bounds in movie space  */
  350. pascal RgnHandle GetMovieSrcBoundsRgn(Movie m)
  351.  = {0x303C,0xFE,0xAAAA}; 
  352. pascal RgnHandle GetTrackMovieSrcBoundsRgn(Track t)
  353.  = {0x303C,0xFF,0xAAAA}; 
  354.  
  355. /*  bounds in track space  */
  356. pascal RgnHandle GetTrackSrcBoundsRgn(Track t)
  357.  = {0x303C,0x111,0xAAAA}; 
  358.  
  359. /*  movie poster box  */
  360. pascal void GetPosterBox(Movie m,Rect *boxRect)
  361.  = {0x303C,0x16F,0xAAAA}; 
  362. pascal void SetPosterBox(Movie m,const Rect *boxRect)
  363.  = {0x303C,0x170,0xAAAA}; 
  364.  
  365. /*  movie/track bounds over a range of time  */
  366. pascal RgnHandle GetMovieSegmentDisplayBoundsRgn(Movie m,TimeValue time,
  367.  TimeValue duration)
  368.  = {0x303C,0x16C,0xAAAA}; 
  369. pascal RgnHandle GetTrackSegmentMovieDisplayBoundsRgn(Track t,TimeValue time,
  370.  TimeValue duration)
  371.  = {0x303C,0x16B,0xAAAA}; 
  372.  
  373. pascal void SetMovieCoverProcs(Movie m,MovieRgnCoverProc uncoverProc,MovieRgnCoverProc coverProc,
  374.  long refCon)
  375.  = {0x303C,0x179,0xAAAA}; 
  376.  
  377. /*  mattes - always in track space  */
  378. pascal PixMapHandle GetTrackSrcMatte(Track t)
  379.  = {0x303C,0x115,0xAAAA}; 
  380. pascal void SetTrackSrcMatte(Track t,PixMapHandle theMatte)
  381.  = {0x303C,0x116,0xAAAA}; 
  382. pascal void DisposeMatte(PixMapHandle theMatte)
  383.  = {0x303C,0x14A,0xAAAA}; 
  384.  
  385. /*  movie creation Routines  */
  386. pascal OSErr NewMovieFromHandle(Movie *m,Handle h,short newMovieFlags,Boolean *dataRefWasChanged)
  387.  = {0x303C,0xF1,0xAAAA}; 
  388. pascal OSErr PutMovieIntoHandle(Movie m,Handle h)
  389.  = {0x303C,0x22,0xAAAA}; 
  390.  
  391. pascal Movie NewMovie(long newMovieFlags)
  392.  = {0x303C,0x187,0xAAAA}; 
  393. pascal void DisposeMovie(Movie m)
  394.  = {0x303C,0x23,0xAAAA}; 
  395.  
  396. /*  Movie Routines  */
  397. pascal unsigned long GetMovieCreationTime(Movie m)
  398.  = {0x303C,0x26,0xAAAA}; 
  399. pascal unsigned long GetMovieModificationTime(Movie m)
  400.  = {0x303C,0x27,0xAAAA}; 
  401.  
  402. pascal TimeScale GetMovieTimeScale(Movie m)
  403.  = {0x303C,0x29,0xAAAA}; 
  404. pascal void SetMovieTimeScale(Movie m,TimeScale timeScale)
  405.  = {0x303C,0x2A,0xAAAA}; 
  406.  
  407. pascal TimeValue GetMovieDuration(Movie m)
  408.  = {0x303C,0x2B,0xAAAA}; 
  409.  
  410. pascal Fixed GetMovieRate(Movie m)
  411.  = {0x303C,0x2C,0xAAAA}; 
  412. pascal void SetMovieRate(Movie m,Fixed rate)
  413.  = {0x303C,0x2D,0xAAAA}; 
  414.  
  415. pascal Fixed GetMoviePreferredRate(Movie m)
  416.  = {0x303C,0xF3,0xAAAA}; 
  417. pascal void SetMoviePreferredRate(Movie m,Fixed rate)
  418.  = {0x303C,0xF4,0xAAAA}; 
  419.  
  420. pascal short GetMoviePreferredVolume(Movie m)
  421.  = {0x303C,0xF5,0xAAAA}; 
  422. pascal void SetMoviePreferredVolume(Movie m,short volume)
  423.  = {0x303C,0xF6,0xAAAA}; 
  424.  
  425. pascal short GetMovieVolume(Movie m)
  426.  = {0x303C,0x2E,0xAAAA}; 
  427. pascal void SetMovieVolume(Movie m,short volume)
  428.  = {0x303C,0x2F,0xAAAA}; 
  429.  
  430. pascal void GetMovieMatrix(Movie m,MatrixRecord *matrix)
  431.  = {0x303C,0x31,0xAAAA}; 
  432. pascal void SetMovieMatrix(Movie m,const MatrixRecord *matrix)
  433.  = {0x303C,0x32,0xAAAA}; 
  434.  
  435. pascal void GetMoviePreviewTime(Movie m,TimeValue *previewTime,TimeValue *previewDuration)
  436.  = {0x303C,0x33,0xAAAA}; 
  437. pascal void SetMoviePreviewTime(Movie m,TimeValue previewTime,TimeValue previewDuration)
  438.  = {0x303C,0x34,0xAAAA}; 
  439.  
  440. pascal TimeValue GetMoviePosterTime(Movie m)
  441.  = {0x303C,0x35,0xAAAA}; 
  442. pascal void SetMoviePosterTime(Movie m,TimeValue posterTime)
  443.  = {0x303C,0x36,0xAAAA}; 
  444.  
  445. pascal void GetMovieSelection(Movie m,TimeValue *selectionTime,TimeValue *selectionDuration)
  446.  = {0x303C,0x37,0xAAAA}; 
  447. pascal void SetMovieSelection(Movie m,TimeValue selectionTime,TimeValue selectionDuration)
  448.  = {0x303C,0x38,0xAAAA}; 
  449.  
  450. pascal void SetMovieActiveSegment(Movie m,TimeValue startTime,TimeValue duration)
  451.  = {0x303C,0x15C,0xAAAA}; 
  452. pascal void GetMovieActiveSegment(Movie m,TimeValue *startTime,TimeValue *duration)
  453.  = {0x303C,0x15D,0xAAAA}; 
  454.  
  455. pascal TimeValue GetMovieTime(Movie m,TimeRecord *currentTime)
  456.  = {0x303C,0x39,0xAAAA}; 
  457. pascal void SetMovieTime(Movie m,const TimeRecord *newtime)
  458.  = {0x303C,0x3C,0xAAAA}; 
  459. pascal void SetMovieTimeValue(Movie m,TimeValue newtime)
  460.  = {0x303C,0x3D,0xAAAA}; 
  461.  
  462. pascal UserData GetMovieUserData(Movie m)
  463.  = {0x303C,0x3E,0xAAAA}; 
  464.  
  465. pascal void SetMoviePlayHints(Movie movie,long flags,long flagsMask)
  466.  = {0x303C,0x1A1,0xAAAA};
  467.  
  468. /*  Movie/Track/Media finding Routines  */
  469. pascal long GetMovieTrackCount(Movie m)
  470.  = {0x303C,0x3F,0xAAAA}; 
  471. pascal Track GetMovieTrack(Movie m,long trackID)
  472.  = {0x303C,0x40,0xAAAA}; 
  473.  
  474. pascal Track GetMovieIndTrack(Movie m,long index)
  475.  = {0x303C,0x117,0xAAAA}; 
  476.  
  477. pascal long GetTrackID(Track t)
  478.  = {0x303C,0x127,0xAAAA}; 
  479.  
  480. pascal Movie GetTrackMovie(Track t)
  481.  = {0x303C,0xD0,0xAAAA}; 
  482.  
  483. pascal Media GetTrackMedia(Track t)
  484.  = {0x303C,0x62,0xAAAA}; 
  485. pascal Track GetMediaTrack(Media m)
  486.  = {0x303C,0xC5,0xAAAA}; 
  487.  
  488. /*  Track creation Routines  */
  489. pascal Track NewMovieTrack(Movie m,Fixed width,Fixed height,short trackVolume)
  490.  = {0x303C,0x188,0xAAAA}; 
  491. pascal void DisposeMovieTrack(Track t)
  492.  = {0x303C,0x42,0xAAAA}; 
  493.  
  494. /*  Track Routines  */
  495. pascal unsigned long GetTrackCreationTime(Track t)
  496.  = {0x303C,0x43,0xAAAA}; 
  497. pascal unsigned long GetTrackModificationTime(Track t)
  498.  = {0x303C,0x44,0xAAAA}; 
  499.  
  500. pascal Boolean GetTrackEnabled(Track t)
  501.  = {0x303C,0x45,0xAAAA}; 
  502. pascal void SetTrackEnabled(Track t,Boolean isEnabled)
  503.  = {0x303C,0x46,0xAAAA}; 
  504.  
  505. pascal long GetTrackUsage(Track t)
  506.  = {0x303C,0x47,0xAAAA}; 
  507. pascal void SetTrackUsage(Track t,long usage)
  508.  = {0x303C,0x48,0xAAAA}; 
  509.  
  510. pascal TimeValue GetTrackDuration(Track t)
  511.  = {0x303C,0x4B,0xAAAA}; 
  512.  
  513. pascal TimeValue GetTrackOffset(Track t)
  514.  = {0x303C,0x4C,0xAAAA}; 
  515. pascal void SetTrackOffset(Track t,TimeValue offset)
  516.  = {0x303C,0x4D,0xAAAA}; 
  517.  
  518. pascal void GetTrackPriority(Track t,PriorityType *priority)
  519.  = {0x303C,0x4E,0xAAAA}; 
  520. pascal void SetTrackPriority(Track t,const PriorityType *priority)
  521.  = {0x303C,0x4F,0xAAAA}; 
  522.  
  523. pascal short GetTrackLayer(Track t)
  524.  = {0x303C,0x50,0xAAAA}; 
  525. pascal void SetTrackLayer(Track t,short layer)
  526.  = {0x303C,0x51,0xAAAA}; 
  527.  
  528. pascal Track GetTrackAlternate(Track t)
  529.  = {0x303C,0x52,0xAAAA}; 
  530. pascal void SetTrackAlternate(Track t,Track alternateT)
  531.  = {0x303C,0x53,0xAAAA}; 
  532.  
  533. pascal short GetTrackVolume(Track t)
  534.  = {0x303C,0x54,0xAAAA}; 
  535. pascal void SetTrackVolume(Track t,short volume)
  536.  = {0x303C,0x55,0xAAAA}; 
  537.  
  538. pascal void GetTrackMatrix(Track t,MatrixRecord *matrix)
  539.  = {0x303C,0x56,0xAAAA}; 
  540. pascal void SetTrackMatrix(Track t,const MatrixRecord *matrix)
  541.  = {0x303C,0x57,0xAAAA}; 
  542.  
  543. pascal void GetTrackDimensions(Track t,Fixed *width,Fixed *height)
  544.  = {0x303C,0x5D,0xAAAA}; 
  545. pascal void SetTrackDimensions(Track t,Fixed width,Fixed height)
  546.  = {0x303C,0x5E,0xAAAA}; 
  547.  
  548. pascal UserData GetTrackUserData(Track t)
  549.  = {0x303C,0x5F,0xAAAA}; 
  550.  
  551. /*  Media creation Routines  */
  552. pascal Media NewTrackMedia(Track t,OSType mediaType,TimeScale timeScale,
  553.  Handle dataRef,OSType dataRefType)
  554.  = {0x303C,0x18E,0xAAAA}; 
  555. pascal void DisposeTrackMedia(Media m)
  556.  = {0x303C,0x61,0xAAAA}; 
  557.  
  558. /*  Media Routines  */
  559. pascal unsigned long GetMediaCreationTime(Media m)
  560.  = {0x303C,0x66,0xAAAA}; 
  561. pascal unsigned long GetMediaModificationTime(Media m)
  562.  = {0x303C,0x67,0xAAAA}; 
  563.  
  564. pascal TimeScale GetMediaTimeScale(Media m)
  565.  = {0x303C,0x68,0xAAAA}; 
  566. pascal void SetMediaTimeScale(Media m,TimeScale timeScale)
  567.  = {0x303C,0x69,0xAAAA}; 
  568.  
  569. pascal TimeValue GetMediaDuration(Media m)
  570.  = {0x303C,0x6A,0xAAAA}; 
  571.  
  572. pascal short GetMediaLanguage(Media m)
  573.  = {0x303C,0x6B,0xAAAA}; 
  574. pascal void SetMediaLanguage(Media m,short language)
  575.  = {0x303C,0x6C,0xAAAA}; 
  576.  
  577. pascal short GetMediaQuality(Media m)
  578.  = {0x303C,0x6D,0xAAAA}; 
  579. pascal void SetMediaQuality(Media m,short quality)
  580.  = {0x303C,0x6E,0xAAAA}; 
  581.  
  582. pascal UserData GetMediaUserData(Media m)
  583.  = {0x303C,0x70,0xAAAA}; 
  584.  
  585. pascal void SetMediaPlayHints(Movie movie,long flags,long flagsMask)
  586.  = {0x303C,0x1A2,0xAAAA};
  587.  
  588. /*  Media Handler Routines  */
  589. pascal MediaHandler GetMediaHandler(Media m)
  590.  = {0x303C,0x71,0xAAAA}; 
  591. pascal OSErr SetMediaHandler(Media m,MediaHandler mH)
  592.  = {0x303C,0x190,0xAAAA}; 
  593.  
  594. pascal void GetMediaHandlerDescription(Media m,OSType *mediaType,const Str255 originalName,
  595.  OSType *originalManufacturer)
  596.  = {0x303C,0x6F,0xAAAA}; 
  597.  
  598. #ifdef __cplusplus
  599. }
  600. #endif
  601. enum {dataRefSelfReference = 1<<0,dataRefWasNotResolved = 1<<1};
  602. typedef unsigned char dataRefAttributesFlags;
  603.  
  604.  
  605. #ifdef __cplusplus
  606. extern "C" {
  607. #endif
  608. /*  Media dataRef Routines  */
  609. pascal OSErr GetMediaDataRef(Media m,short index,Handle *dataRef,OSType *dataRefType,
  610.  long *dataRefAttributes)
  611.  = {0x303C,0x197,0xAAAA}; 
  612. pascal OSErr AddMediaDataRef(Media m,short *index,Handle dataRef,OSType dataRefType)
  613.  = {0x303C,0x198,0xAAAA}; 
  614.  
  615. pascal OSErr GetMediaDataRefCount(Media m,short *count)
  616.  = {0x303C,0x199,0xAAAA}; 
  617.  
  618. /*  Media data handler Routines  */
  619. pascal DataHandler GetMediaDataHandler(Media m,short index)
  620.  = {0x303C,0x19F,0xAAAA}; 
  621. pascal OSErr SetMediaDataHandler(Media m,short index,DataHandler dataHandler)
  622.  = {0x303C,0x1A0,0xAAAA}; 
  623.  
  624. pascal void GetMediaDataHandlerDescription(Media m,short index,OSType *dhType,
  625.  Str255 creatorName,OSType *creatorManufacturer)
  626.  = {0x303C,0x19E,0xAAAA}; 
  627.  
  628. /*  Media sample Routines  */
  629. pascal long GetMediaSampleDescriptionCount(Media m)
  630.  = {0x303C,0x77,0xAAAA}; 
  631. pascal void GetMediaSampleDescription(Media m,long index,SampleDescriptionHandle descH)
  632.  = {0x303C,0x78,0xAAAA}; 
  633. pascal long GetMediaSampleCount(Media m)
  634.  = {0x303C,0x79,0xAAAA}; 
  635. pascal void SampleNumToMediaTime(Media m,long logicalSampleNum,TimeValue *sampleTime,
  636.  TimeValue *sampleDuration)
  637.  = {0x303C,0x7A,0xAAAA}; 
  638. pascal void MediaTimeToSampleNum(Media m,TimeValue time,long *sampleNum,
  639.  TimeValue *sampleTime,TimeValue *sampleDuration)
  640.  = {0x303C,0x7B,0xAAAA}; 
  641.  
  642. pascal OSErr AddMediaSample(Media m,Handle dataIn,long inOffset,unsigned long size,
  643.  TimeValue durationPerSample,SampleDescriptionHandle sampleDescriptionH,
  644.  long numberOfSamples,short sampleFlags,TimeValue *sampleTime)
  645.  = {0x303C,0x7C,0xAAAA}; 
  646. pascal OSErr AddMediaSampleReference(Media m,long dataOffset,unsigned long size,
  647.  TimeValue durationPerSample,SampleDescriptionHandle sampleDescriptionH,
  648.  long numberOfSamples,short sampleFlags,TimeValue *sampleTime)
  649.  = {0x303C,0x7D,0xAAAA}; 
  650. pascal OSErr GetMediaSample(Media m,Handle dataOut,long maxSizeToGrow,long *size,
  651.  TimeValue time,TimeValue *sampleTime,TimeValue *durationPerSample,SampleDescriptionHandle sampleDescriptionH,
  652.  long *sampleDescriptionIndex,long maxNumberOfSamples,long *numberOfSamples,
  653.  short *sampleFlags)
  654.  = {0x303C,0x7E,0xAAAA}; 
  655. pascal OSErr GetMediaSampleReference(Media m,long *dataOffset,long *size,
  656.  TimeValue time,TimeValue *sampleTime,TimeValue *durationPerSample,SampleDescriptionHandle sampleDescriptionH,
  657.  long *sampleDescriptionIndex,long maxNumberOfSamples,long *numberOfSamples,
  658.  short *sampleFlags)
  659.  = {0x303C,0x7F,0xAAAA}; 
  660. pascal void SetPreferredMediaChunkSize(Media m,long minChunkSize,long maxChunkSize,
  661.  long padSize)
  662.  = {0x303C,0x80,0xAAAA}; 
  663.  
  664. /*  High level editing Routines  */
  665. pascal Movie CutMovieSelection(Movie m)
  666.  = {0x303C,0x8D,0xAAAA}; 
  667. pascal Movie CopyMovieSelection(Movie m)
  668.  = {0x303C,0x8E,0xAAAA}; 
  669. pascal void PasteMovieSelection(Movie m,Movie src)
  670.  = {0x303C,0x8F,0xAAAA}; 
  671. pascal void AddMovieSelection(Movie m,Movie src)
  672.  = {0x303C,0x152,0xAAAA}; 
  673. pascal void ClearMovieSelection(Movie m)
  674.  = {0x303C,0xE1,0xAAAA}; 
  675.  
  676. /*  Middle-level Editing Routines  */
  677. pascal OSErr InsertTrackSegment(Track srcTrack,Track dstTrack,TimeValue srcIn,
  678.  TimeValue srcDuration,TimeValue dstIn)
  679.  = {0x303C,0x85,0xAAAA}; 
  680. pascal OSErr InsertMovieSegment(Movie srcMovie,Movie dstMovie,TimeValue srcIn,
  681.  TimeValue srcDuration,TimeValue dstIn)
  682.  = {0x303C,0x86,0xAAAA}; 
  683. pascal OSErr InsertEmptyTrackSegment(Track dstTrack,TimeValue dstIn,TimeValue dstDuration)
  684.  = {0x303C,0x87,0xAAAA}; 
  685. pascal OSErr InsertEmptyMovieSegment(Movie dstMovie,TimeValue dstIn,TimeValue dstDuration)
  686.  = {0x303C,0x88,0xAAAA}; 
  687. pascal OSErr DeleteTrackSegment(Track t,TimeValue dstIn,TimeValue duration)
  688.  = {0x303C,0x89,0xAAAA}; 
  689. pascal OSErr DeleteMovieSegment(Movie m,TimeValue dstIn,TimeValue duration)
  690.  = {0x303C,0x8A,0xAAAA}; 
  691. pascal OSErr ScaleTrackSegment(Track t,TimeValue dstIn,TimeValue oldDuration,
  692.  TimeValue newDuration)
  693.  = {0x303C,0x8B,0xAAAA}; 
  694. pascal OSErr ScaleMovieSegment(Movie m,TimeValue dstIn,TimeValue oldDuration,
  695.  TimeValue newDuration)
  696.  = {0x303C,0x8C,0xAAAA}; 
  697.  
  698. pascal OSErr CopyTrackSettings(Track srcTrack,Track dstTrack)
  699.  = {0x303C,0x153,0xAAAA}; 
  700. pascal OSErr CopyMovieSettings(Movie srcMovie,Movie dstMovie)
  701.  = {0x303C,0x154,0xAAAA}; 
  702.  
  703. /*  low-level Editing Routines  */
  704. pascal OSErr InsertMediaIntoTrack(Track t,TimeValue trackStart,TimeValue mediaTime,
  705.  TimeValue mediaDuration,Fixed mediaRate)
  706.  = {0x303C,0x183,0xAAAA}; 
  707.  
  708. pascal OSErr BeginMediaEdits(Media m)
  709.  = {0x303C,0x72,0xAAAA}; 
  710. pascal OSErr EndMediaEdits(Media m)
  711.  = {0x303C,0x73,0xAAAA}; 
  712.  
  713. /*  movie & track edit state Routines  */
  714. pascal MovieEditState NewMovieEditState(Movie m)
  715.  = {0x303C,0x104,0xAAAA}; 
  716. pascal OSErr UseMovieEditState(Movie m,MovieEditState toState)
  717.  = {0x303C,0x105,0xAAAA}; 
  718. pascal OSErr DisposeMovieEditState(MovieEditState state)
  719.  = {0x303C,0x106,0xAAAA}; 
  720.  
  721. pascal TrackEditState NewTrackEditState(Track t)
  722.  = {0x303C,0x107,0xAAAA}; 
  723. pascal OSErr UseTrackEditState(Track t,TrackEditState state)
  724.  = {0x303C,0x108,0xAAAA}; 
  725. pascal OSErr DisposeTrackEditState(TrackEditState state)
  726.  = {0x303C,0x109,0xAAAA}; 
  727.  
  728. /*  Miscellaneous Routines  */
  729. pascal TimeValue TrackTimeToMediaTime(TimeValue value,Track t)
  730.  = {0x303C,0x96,0xAAAA}; 
  731.  
  732. pascal long GetMovieDataSize(Movie m,TimeValue startTime,TimeValue duration)
  733.  = {0x303C,0x98,0xAAAA}; 
  734. pascal long GetTrackDataSize(Track t,TimeValue startTime,TimeValue duration)
  735.  = {0x303C,0x149,0xAAAA}; 
  736. pascal long GetMediaDataSize(Media m,TimeValue startTime,TimeValue duration)
  737.  = {0x303C,0x99,0xAAAA}; 
  738.  
  739. pascal Boolean PtInMovie(Movie m,Point pt)
  740.  = {0x303C,0x9A,0xAAAA}; 
  741. pascal Boolean PtInTrack(Track t,Point pt)
  742.  = {0x303C,0x9B,0xAAAA}; 
  743.  
  744. pascal OSErr UpdateMovie(Movie m)
  745.  = {0x303C,0x1F,0xAAAA}; 
  746.  
  747. /*  Alternate Group Selection Routines  */
  748. pascal void SetMovieLanguage(Movie m,long language)
  749.  = {0x303C,0x9C,0xAAAA}; 
  750.  
  751. pascal void SetAutoTrackAlternatesEnabled(Movie m,Boolean enable)
  752.  = {0x303C,0x15E,0xAAAA}; 
  753. pascal void SelectMovieAlternates(Movie m)
  754.  = {0x303C,0x15F,0xAAAA}; 
  755.  
  756. /*  UserData Routines  */
  757. pascal OSErr GetUserData(UserData u,Handle data,long pType,long index)
  758.  = {0x303C,0x9E,0xAAAA}; 
  759. pascal OSErr AddUserData(UserData u,Handle data,long pType)
  760.  = {0x303C,0x9F,0xAAAA}; 
  761. pascal OSErr RemoveUserData(UserData u,long pType,long index)
  762.  = {0x303C,0xA0,0xAAAA}; 
  763. pascal short CountUserDataType(UserData userDataH,long pType)
  764.  = {0x303C,0x14B,0xAAAA}; 
  765. pascal OSErr AddUserDataText(UserData u,Handle data,long pType,long index,
  766.  short itlRegionTag)
  767.  = {0x303C,0x14C,0xAAAA}; 
  768. pascal OSErr GetUserDataText(UserData u,Handle data,long pType,long index,
  769.  short itlRegionTag)
  770.  = {0x303C,0x14D,0xAAAA}; 
  771. pascal OSErr RemoveUserDataText(UserData u,long pType,long index,short itlRegionTag)
  772.  = {0x303C,0x14E,0xAAAA}; 
  773.  
  774. /*  interesting time Routines  */
  775. pascal void GetMediaNextInterestingTime(Media m,short interestingTimeFlags,
  776.  TimeValue time,Fixed rate,TimeValue *interestingTime,TimeValue *interestingDuration)
  777.  = {0x303C,0x16D,0xAAAA}; 
  778. pascal void GetTrackNextInterestingTime(Track t,short interestingTimeFlags,
  779.  TimeValue time,Fixed rate,TimeValue *interestingTime,TimeValue *interestingDuration)
  780.  = {0x303C,0xE2,0xAAAA}; 
  781. pascal void GetMovieNextInterestingTime(Movie m,short interestingTimeFlags,
  782.  short numMediaTypes,const OSType *whichMediaTypes,TimeValue time,Fixed rate,
  783.  TimeValue *interestingTime,TimeValue *interestingDuration)
  784.  = {0x303C,0x10E,0xAAAA}; 
  785.  
  786. /*  movie file Routines  */
  787. pascal OSErr CreateMovieFile(const FSSpec *fileSpec,OSType creator,ScriptCode scriptTag,
  788.  long createMovieFileFlags,short *resRefNum,Movie *newMovie)
  789.  = {0x303C,0x191,0xAAAA}; 
  790. pascal OSErr DeleteMovieFile(const FSSpec *fileSpec)
  791.  = {0x303C,0x175,0xAAAA}; 
  792.  
  793. pascal OSErr OpenMovieFile(const FSSpec *fileSpec,short *resRefNum,char perms)
  794.  = {0x303C,0x192,0xAAAA}; 
  795. pascal OSErr CloseMovieFile(short resRefNum)
  796.  = {0x303C,0xD5,0xAAAA}; 
  797. #ifdef __cplusplus
  798. }
  799. #endif
  800. enum {
  801.  
  802.  movieInDataForkResID = -1            /* magic res ID */
  803.  
  804. };
  805.  
  806. #ifdef __cplusplus
  807. extern "C" {
  808. #endif
  809. pascal OSErr NewMovieFromFile(Movie *m,short resRefNum,short *resId,char *resName,
  810.  short newMovieFlags,Boolean *dataRefWasChanged)
  811.  = {0x303C,0xF0,0xAAAA}; 
  812.  
  813. pascal OSErr AddMovieResource(Movie m,short resRefNum,short *resId,const char *resName)
  814.  = {0x303C,0xD7,0xAAAA}; 
  815. pascal OSErr RemoveMovieResource(short resRefNum,short resId)
  816.  = {0x303C,0x176,0xAAAA}; 
  817. pascal OSErr UpdateMovieResource(Movie m,short resRefNum,short resId,const char *resName)
  818.  = {0x303C,0xD8,0xAAAA}; 
  819.  
  820. pascal Boolean HasMovieChanged(Movie m)
  821.  = {0x303C,0xD9,0xAAAA}; 
  822. pascal void ClearMovieChanged(Movie m)
  823.  = {0x303C,0x113,0xAAAA}; 
  824.  
  825. pascal void FlattenMovie(Movie m,long movieFlattenFlags,const FSSpec *theFile,
  826.  OSType creator,ScriptCode scriptTag,long createMovieFileFlags,short *resId,
  827.  const char *resName)
  828.  = {0x303C,0x19B,0xAAAA}; 
  829. pascal Movie FlattenMovieData(Movie m,long movieFlattenFlags,const FSSpec *theFile,
  830.  OSType creator,ScriptCode scriptTag,long createMovieFileFlags)
  831.  = {0x303C,0x19C,0xAAAA}; 
  832. pascal void SetMovieProgressProc(Movie m,MovieProgressProcPtr p,long refCon)
  833.  = {0x303C,0x19A,0xAAAA}; 
  834.  
  835. pascal OSErr PutMovieOnScrap(Movie m,long movieScrapFlags)
  836.  = {0x303C,0x18C,0xAAAA}; 
  837. pascal Movie NewMovieFromScrap(long newMovieFlags)
  838.  = {0x303C,0x18D,0xAAAA}; 
  839.  
  840. /*  Video Media Routines  */
  841. pascal HandlerError GetVideoMediaGraphicsMode(MediaHandler mh,long *graphicsMode,
  842.  RGBColor *opColor)
  843.  = {0x2F3C,0x8,0x101,0x7000,0xA82A}; 
  844. pascal HandlerError SetVideoMediaGraphicsMode(MediaHandler mh,long graphicsMode,
  845.  const RGBColor *opColor)
  846.  = {0x2F3C,0x8,0x102,0x7000,0xA82A}; 
  847.  
  848. /*  Sound Media Routines  */
  849. pascal HandlerError GetSoundMediaBalance(MediaHandler mh,short *balance)
  850.  = {0x2F3C,0x4,0x101,0x7000,0xA82A}; 
  851. pascal HandlerError SetSoundMediaBalance(MediaHandler mh,short balance)
  852.  = {0x2F3C,0x2,0x102,0x7000,0xA82A}; 
  853.  
  854. #ifdef __cplusplus
  855. }
  856. #endif
  857.  
  858.  
  859. enum {
  860. /* Dialog box IDs for previewing */
  861.  spGetDlgID_Sys6 = -3998,
  862.  spGetDlgID_Sys7 = -6039,
  863. /* Item numbers for the Previewing Dialog Boxes */
  864.  spItemReserved = 10,
  865.  spItemPreviewArea = 11,
  866.  spItemPreviewStatText = 12,
  867.  spItemVertDividerPict = 13,
  868.  spItemFileInfoField = 14,
  869.  spItemCreatePreviewButton = 15,
  870.  spFirstPreviewItemNumber = spItemPreviewArea,
  871.  spLastPreviewItemNumber = spItemCreatePreviewButton
  872. };
  873.  
  874. #ifdef __cplusplus
  875. extern "C" {
  876. #endif
  877.  
  878. pascal void StandardGetFilePreview(FileFilterProcPtr fileFilter,short numTypes,
  879.  SFTypeList typeList,StandardFileReply *reply)
  880.  = {0x3F3C,0x0009,0xA9EA};
  881. pascal void CustomGetFilePreview(FileFilterYDProcPtr fileFilter,short numTypes,
  882.  SFTypeList typeList,StandardFileReply *reply,short dlgID,Point    where,
  883.  DlgHookYDProcPtr dlgHook,ModalFilterYDProcPtr filterProc,short *activeList,
  884.  ActivateYDProcPtr activateProc,void *yourDataPtr)
  885.  ={ 0x3F3C,0x000A,0xA9EA};
  886.  
  887. #ifdef __cplusplus
  888. }
  889. #endif
  890.  
  891.  
  892. enum {
  893.  
  894.  couldNotResolveDataRef = -2000,
  895.  badImageDescription = -2001,
  896.  badPublicMovieAtom = -2002,
  897.  cantFindHandler = -2003,
  898.  cantOpenHandler = -2004,
  899.  badComponentType = -2005,
  900.  noMediaHandler = -2006,
  901.  noDataHandler = -2007,
  902.  invalidMedia = -2008,
  903.  invalidTrack = -2009,
  904.  invalidMovie = -2010,
  905.  invalidSampleTable = -2011,
  906.  invalidDataRef = -2012,
  907.  invalidHandler = -2013,
  908.  invalidDuration = -2014,
  909.  invalidTime = -2015,
  910.  cantPutPublicMovieAtom = -2016,
  911.  badEditList = -2017,
  912.  mediaTypesDontMatch = -2018,
  913.  progressProcAborted = -2019
  914. };
  915. enum {
  916.  movieToolboxUnitialized = -2020,
  917.  wfFileNotFound = -2021,
  918.  cantCreateSingleForkFile = -2022,
  919.  invalidEditState = -2023,
  920.  nonMatchingEditState = -2024,
  921.  staleEditState = -2025,
  922.  userDataItemNotFound = -2026,
  923.  maxSizeToGrowTooSmall = -2027,
  924.  badTrackIndex = -2028,
  925.  trackIDNotFound = -2029,
  926.  trackNotInMovie = -2030,
  927.  timeNotInTrack = -2031,
  928.  timeNotInMedia = -2032,
  929.  badEditIndex = -2033,
  930.  internalQuickTimeError = -2034,
  931.  cantEnableTrack = -2035,
  932.  invalidRect = -2036,
  933.  invalidSampleNum = -2037,
  934.  invalidChunkNum = -2038,
  935.  invalidSampleDescIndex = -2039
  936. };
  937. enum {
  938.  invalidChunkCache = -2040,
  939.  invalidSampleDescription = -2041,
  940.  
  941. /* this should probably be in its own range for data handlers */
  942.  dataNotOpenForRead = -2042,
  943.  dataNotOpenForWrite = -2043,
  944.  dataAlreadyOpenForWrite = -2044,
  945.  dataAlreadyClosed = -2045,
  946.  endOfDataReached = -2046,
  947.  dataNoDataRef = -2047,
  948.  
  949. /* private errors */
  950.  noMovieInDataFork = -2048,            /* this is a private error */
  951.  
  952.  invalidDataRefContainer = -2049,
  953.  badDataRefIndex = -2050
  954. };
  955.  
  956. /* TimeBase Routines */
  957. enum {loopTimeBase = 1};
  958. typedef unsigned char TimeBaseFlags;
  959.  
  960. enum {
  961.  triggerTimeFwd       = 0x0001,      /* when curTime exceeds triggerTime going forward */
  962.  triggerTimeBwd       = 0x0002,      /* when curTime exceeds triggerTime going backwards */
  963.  triggerTimeEither    = 0x0003,      /* when curTime exceeds triggerTime going either direction */
  964.  triggerRateLT        = 0x0004,      /* when rate changes to less than trigger value */
  965.  triggerRateGT        = 0x0008,      /* when rate changes to greater than trigger value */
  966.  triggerRateEqual     = 0x0010,      /* when rate changes to equal trigger value */
  967.  triggerRateLTE       = triggerRateLT | triggerRateEqual,
  968.  triggerRateGTE       = triggerRateGT | triggerRateEqual,
  969.  triggerRateNotEqual  = triggerRateGT | triggerRateEqual | triggerRateLT,
  970.  triggerRateChange    = 0
  971. };
  972. typedef unsigned char QTCallBackFlags;
  973.  
  974. enum {timeBaseBeforeStartTime = 1,timeBaseAfterStopTime = 2};
  975. typedef unsigned char TimeBaseStatus;
  976.  
  977. enum {callBackAtTime = 1,callBackAtRate = 2,callBackAtTimeJump = 3,callBackAtInterrupt = 0x8000};
  978. typedef unsigned short QTCallBackType;
  979.  
  980.  
  981. typedef pascal void (*QTCallBackProc)(QTCallBack cb,long refCon);
  982.  
  983. enum {
  984.  
  985.  qtcbNeedsRateChanges = 1,
  986.  qtcbNeedsTimeChanges = 2
  987. };
  988.  
  989. /* CallBack equates */
  990. struct QTCallBackHeader {
  991.  long callBackFlags;
  992.  long reserved1;
  993.  char qtPrivate[40];
  994. };
  995.  
  996. typedef struct QTCallBackHeader QTCallBackHeader;
  997.  
  998.  
  999. #ifdef __cplusplus
  1000. extern "C" {
  1001. #endif
  1002. /*  TimeBase Routines  */
  1003. pascal TimeBase NewTimeBase(void)
  1004.  = {0x303C,0xA5,0xAAAA}; 
  1005. pascal void DisposeTimeBase(TimeBase tb)
  1006.  = {0x303C,0xB6,0xAAAA}; 
  1007.  
  1008. pascal TimeValue GetTimeBaseTime(TimeBase tb,TimeScale s,TimeRecord *out)
  1009.  = {0x303C,0xA6,0xAAAA}; 
  1010. pascal void SetTimeBaseTime(TimeBase tb,const TimeRecord *tr)
  1011.  = {0x303C,0xA7,0xAAAA}; 
  1012. pascal void SetTimeBaseValue(TimeBase tb,TimeValue t,TimeScale s)
  1013.  = {0x303C,0xA8,0xAAAA}; 
  1014.  
  1015. pascal Fixed GetTimeBaseRate(TimeBase tb)
  1016.  = {0x303C,0xA9,0xAAAA}; 
  1017. pascal void SetTimeBaseRate(TimeBase tb,Fixed r)
  1018.  = {0x303C,0xAA,0xAAAA}; 
  1019.  
  1020. pascal TimeValue GetTimeBaseStartTime(TimeBase tb,TimeScale s,TimeRecord *out)
  1021.  = {0x303C,0xAB,0xAAAA}; 
  1022. pascal void SetTimeBaseStartTime(TimeBase tb,const TimeRecord *tr)
  1023.  = {0x303C,0xAC,0xAAAA}; 
  1024. pascal TimeValue GetTimeBaseStopTime(TimeBase tb,TimeScale s,TimeRecord *out)
  1025.  = {0x303C,0xAD,0xAAAA}; 
  1026. pascal void SetTimeBaseStopTime(TimeBase tb,const TimeRecord *tr)
  1027.  = {0x303C,0xAE,0xAAAA}; 
  1028.  
  1029. pascal long GetTimeBaseFlags(TimeBase tb)
  1030.  = {0x303C,0xB1,0xAAAA}; 
  1031. pascal void SetTimeBaseFlags(TimeBase tb,long timeBaseFlags)
  1032.  = {0x303C,0xB2,0xAAAA}; 
  1033.  
  1034. pascal void SetTimeBaseMasterTimeBase(TimeBase slave,TimeBase master,const TimeRecord *slaveZero)
  1035.  = {0x303C,0xB4,0xAAAA}; 
  1036. pascal TimeBase GetTimeBaseMasterTimeBase(TimeBase tb)
  1037.  = {0x303C,0xAF,0xAAAA}; 
  1038. pascal void SetTimeBaseMasterClock(TimeBase slave,Component clockMeister,
  1039.  const TimeRecord *slaveZero)
  1040.  = {0x303C,0xB3,0xAAAA}; 
  1041. pascal ComponentInstance GetTimeBaseMasterClock(TimeBase tb)
  1042.  = {0x303C,0xB0,0xAAAA}; 
  1043.  
  1044. pascal void ConvertTime(TimeRecord *inout,TimeBase newBase)
  1045.  = {0x303C,0xB5,0xAAAA}; 
  1046. pascal void ConvertTimeScale(TimeRecord *inout,TimeScale newScale)
  1047.  = {0x303C,0xB7,0xAAAA}; 
  1048. pascal void AddTime(TimeRecord *dst,const TimeRecord *src)
  1049.  = {0x303C,0x10C,0xAAAA}; 
  1050. pascal void SubtractTime(TimeRecord *dst,const TimeRecord *src)
  1051.  = {0x303C,0x10D,0xAAAA}; 
  1052.  
  1053. pascal long GetTimeBaseStatus(TimeBase tb,TimeRecord *unpinnedTime)
  1054.  = {0x303C,0x10B,0xAAAA}; 
  1055.  
  1056. pascal void SetTimeBaseZero(TimeBase tb,TimeRecord *zero)
  1057.  = {0x303C,0x128,0xAAAA}; 
  1058.  
  1059. /*  CallBack Routines  */
  1060. pascal QTCallBack NewCallBack(TimeBase tb,short qtType)
  1061.  = {0x303C,0xEB,0xAAAA}; 
  1062.  
  1063. pascal void DisposeCallBack(QTCallBack qtCall)
  1064.  = {0x303C,0xEC,0xAAAA}; 
  1065.  
  1066. pascal short GetCallBackType(QTCallBack qtCall)
  1067.  = {0x303C,0xED,0xAAAA}; 
  1068. pascal TimeBase GetCallBackTimeBase(QTCallBack qtCall)
  1069.  = {0x303C,0xEE,0xAAAA}; 
  1070.  
  1071. pascal OSErr CallMeWhen(QTCallBack qtCall,QTCallBackProc callBackProc,long refCon,
  1072.  long param1,long param2,long param3)
  1073.  = {0x303C,0xB8,0xAAAA}; 
  1074.  
  1075. pascal void CancelCallBack(QTCallBack cb)
  1076.  = {0x303C,0xB9,0xAAAA}; 
  1077.  
  1078. /*  Clock CallBack support Routines  */
  1079. pascal OSErr AddCallBackToTimeBase(QTCallBack cb)
  1080.  = {0x303C,0x129,0xAAAA}; 
  1081. pascal OSErr RemoveCallBackFromTimeBase(QTCallBack cb)
  1082.  = {0x303C,0x12A,0xAAAA}; 
  1083. pascal QTCallBack GetFirstCallBack(TimeBase tb)
  1084.  = {0x303C,0x12B,0xAAAA}; 
  1085. pascal QTCallBack GetNextCallBack(QTCallBack cb)
  1086.  = {0x303C,0x12C,0xAAAA}; 
  1087. pascal void ExecuteCallBack(QTCallBack cb)
  1088.  = {0x303C,0x12D,0xAAAA}; 
  1089. #ifdef __cplusplus
  1090. }
  1091. #endif
  1092.  
  1093.  
  1094.  
  1095. /* Movie Controller Routines */
  1096.  
  1097. enum {mcActionIdle = 1,mcActionDraw,mcActionActivate,mcActionDeactivate,
  1098.  mcActionMouseDown,mcActionKey,mcActionStop,mcActionPlay,mcActionPlayBackwards,
  1099.  mcActionGotoStart,mcActionGotoEnd,mcActionGotoTime,mcActionMuteToggle,
  1100.  mcActionSetVolume,mcActionSetRate,mcActionIncreaseRate,mcActionDecreaseRate,
  1101.  mcActionStepForward,mcActionStepBackward,mcActionToggleLooping,mcActionSetLooping,
  1102.  mcActionGetLooping,mcActionSetLoopIsPalindrome,mcActionGetLoopIsPalindrome,
  1103.  mcActionSetGrowBoxBounds,mcActionControllerSizeChanged,mcActionIncreaseVolume,
  1104.  mcActionDecreaseVolume,mcActionSetSelectionBegin,mcActionSetSelectionDuration,
  1105.  mcActionSetPosterTime,mcActionSetKeysEnabled,mcActionGetKeysEnabled,
  1106.  mcActionSetPlaySelection,mcActionGetPlaySelection,mcActionSetUseBadge,
  1107.  mcActionGetUseBadge,mcActionSetFlags,mcActionGetFlags,
  1108.  mcActionSetPlayEveryFrame,mcActionGetPlayEveryFrame};
  1109. typedef unsigned short mcAction;
  1110.  
  1111. enum {mcFlagSuppressMovieFrame = 1<<0,mcFlagSuppressStepButtons = 1<<1,
  1112.  mcFlagSuppressSpeakerButton = 1<<2};
  1113.  
  1114.  
  1115. typedef pascal Boolean (*MCActionFilter)(MovieController mc,short *action,long param);
  1116.  
  1117. enum {mcTopLeftMovie = 1<<0,mcScaleMovieToFit = 1<<1};
  1118. typedef unsigned char mcCreationFlagsEnum;
  1119.  
  1120. enum {mcInfoUndoAvailable = 1<<0,mcInfoCutAvailable = 1<<1,mcInfoCopyAvailable = 1<<2,
  1121.  mcInfoPasteAvailable = 1<<3,mcInfoClearAvailable = 1<<4,mcInfoHasSound = 1<<5,
  1122.  mcInfoIsPlaying = 1<<6,mcInfoIsLooping = 1<<7,mcInfoIsInPalindrome = 1<<8,
  1123.  mcInfoEditingEnabled = 1<<9};
  1124. typedef unsigned short mcInfoFlagsEnum;
  1125.  
  1126.  
  1127. #ifdef __cplusplus
  1128. extern "C" {
  1129. #endif
  1130. /*  target management  */
  1131. pascal MovieController MCNewMovieController(Movie m,const Rect *movieRect,
  1132.  long controllerCreationFlags)
  1133.  = {0x303C,0x18A,0xAAAA}; 
  1134. pascal void MCDisposeMovieController(MovieController mc)
  1135.  = {0x303C,0x18B,0xAAAA}; 
  1136.  
  1137. pascal ComponentResult MCSetMovie(MovieController mc,Movie m,WindowPtr movieWindow,
  1138.  Point where)
  1139.  = {0x2F3C,0xC,0x2,0x7000,0xA82A}; 
  1140. pascal ComponentResult MCRemoveMovie(MovieController mc,Movie m)
  1141.  = {0x2F3C,0x4,0x3,0x7000,0xA82A}; 
  1142. pascal long MCCountMovies(MovieController mc)
  1143.  = {0x2F3C,0x0,0x4,0x7000,0xA82A}; 
  1144. pascal Movie MCGetIndMovie(MovieController mc,short index)
  1145.  = {0x2F3C,0x2,0x5,0x7000,0xA82A}; 
  1146. pascal ComponentResult MCRemoveAllMovies(MovieController mc)
  1147.  = {0x2F3C,0x0,0x6,0x7000,0xA82A}; 
  1148.  
  1149. /*  event handling etc.  */
  1150. pascal ComponentResult MCIsPlayerEvent(MovieController mc,const EventRecord *e)
  1151.  = {0x2F3C,0x4,0x7,0x7000,0xA82A}; 
  1152. pascal ComponentResult MCSetActionFilter(MovieController mc,MCActionFilter filter)
  1153.  = {0x2F3C,0x4,0x8,0x7000,0xA82A}; 
  1154. pascal ComponentResult MCDoAction(MovieController mc,short action,void *params)
  1155.  = {0x2F3C,0x6,0x9,0x7000,0xA82A}; 
  1156.  
  1157. /*  state type things  */
  1158. pascal ComponentResult MCSetControllerAttached(MovieController mc,Boolean attach)
  1159.  = {0x2F3C,0x2,0xA,0x7000,0xA82A}; 
  1160. pascal ComponentResult MCIsControllerAttached(MovieController mc)
  1161.  = {0x2F3C,0x0,0xB,0x7000,0xA82A}; 
  1162. pascal ComponentResult MCSetControllerPort(MovieController mc,CGrafPtr gp)
  1163.  = {0x2F3C,0x4,0xC,0x7000,0xA82A}; 
  1164. pascal CGrafPtr MCGetControllerPort(MovieController mc)
  1165.  = {0x2F3C,0x0,0xD,0x7000,0xA82A}; 
  1166.  
  1167. pascal ComponentResult MCSetVisible(MovieController mc,Boolean show)
  1168.  = {0x2F3C,0x2,0xE,0x7000,0xA82A}; 
  1169. pascal ComponentResult MCGetVisible(MovieController mc)
  1170.  = {0x2F3C,0x0,0xF,0x7000,0xA82A}; 
  1171.  
  1172. pascal ComponentResult MCGetControllerBoundsRect(MovieController mc,Rect *bounds)
  1173.  = {0x2F3C,0x4,0x10,0x7000,0xA82A}; 
  1174. pascal ComponentResult MCSetControllerBoundsRect(MovieController mc,const Rect *bounds)
  1175.  = {0x2F3C,0x4,0x11,0x7000,0xA82A}; 
  1176. pascal RgnHandle MCGetControllerBoundsRgn(MovieController mc)
  1177.  = {0x2F3C,0x0,0x12,0x7000,0xA82A}; 
  1178. pascal RgnHandle MCGetWindowRgn(MovieController mc,WindowPtr w)
  1179.  = {0x2F3C,0x4,0x13,0x7000,0xA82A}; 
  1180.  
  1181. /*  other stuff  */
  1182. pascal ComponentResult MCMovieChanged(MovieController mc,Movie m)
  1183.  = {0x2F3C,0x4,0x14,0x7000,0xA82A}; 
  1184. pascal ComponentResult MCSetDuration(MovieController mc,TimeValue duration)
  1185.  = {0x2F3C,0x4,0x15,0x7000,0xA82A}; 
  1186. pascal TimeValue MCGetCurrentTime(MovieController mc,TimeScale *scale)
  1187.  = {0x2F3C,0x4,0x16,0x7000,0xA82A}; 
  1188. pascal ComponentResult MCNewAttachedController(MovieController mc,Movie m,
  1189.  WindowPtr w,Point where)
  1190.  = {0x2F3C,0xC,0x17,0x7000,0xA82A}; 
  1191. pascal ComponentResult MCPositionController(MovieController mc,Rect *movieRect,
  1192.  Rect *controllerRect,long controllerCreationFlags)
  1193.  = {0x2F3C,0xC,0x24,0x7000,0xA82A}; 
  1194.  
  1195. /*  direct event handlers  */
  1196. pascal ComponentResult MCDraw(MovieController mc,WindowPtr w)
  1197.  = {0x2F3C,0x4,0x18,0x7000,0xA82A}; 
  1198. pascal ComponentResult MCActivate(MovieController mc,WindowPtr w,Boolean activate)
  1199.  = {0x2F3C,0x6,0x19,0x7000,0xA82A}; 
  1200. pascal ComponentResult MCIdle(MovieController mc)
  1201.  = {0x2F3C,0x0,0x1A,0x7000,0xA82A}; 
  1202. pascal ComponentResult MCKey(MovieController mc,char key,long modifiers)
  1203.  = {0x2F3C,0x6,0x1B,0x7000,0xA82A}; 
  1204. pascal ComponentResult MCClick(MovieController mc,WindowPtr w,Point where,
  1205.  long when,long modifiers)
  1206.  = {0x2F3C,0x10,0x1C,0x7000,0xA82A}; 
  1207.  
  1208. /*   calls for editing  */
  1209. pascal ComponentResult MCEnableEditing(MovieController mc,Boolean enabled)
  1210.  = {0x2F3C,0x2,0x1D,0x7000,0xA82A}; 
  1211. pascal long MCIsEditingEnabled(MovieController mc)
  1212.  = {0x2F3C,0x0,0x1E,0x7000,0xA82A}; 
  1213. pascal Movie MCCopy(MovieController mc)
  1214.  = {0x2F3C,0x0,0x1F,0x7000,0xA82A}; 
  1215. pascal Movie MCCut(MovieController mc)
  1216.  = {0x2F3C,0x0,0x20,0x7000,0xA82A}; 
  1217. pascal ComponentResult MCPaste(MovieController mc,Movie srcMovie)
  1218.  = {0x2F3C,0x4,0x21,0x7000,0xA82A}; 
  1219. pascal ComponentResult MCClear(MovieController mc)
  1220.  = {0x2F3C,0x0,0x22,0x7000,0xA82A}; 
  1221. pascal ComponentResult MCUndo(MovieController mc)
  1222.  = {0x2F3C,0x0,0x23,0x7000,0xA82A}; 
  1223.  
  1224. /*  menu related stuff  */
  1225. pascal ComponentResult MCGetControllerInfo(MovieController mc,long *mcInfoFlags)
  1226.  = {0x2F3C,0x4,0x25,0x7000,0xA82A}; 
  1227.  
  1228. pascal ComponentResult MCSetClip(MovieController mc, RgnHandle theClip, RgnHandle movieClip)
  1229. = {0x2f3c,8,40,0x7000,0xa82a};
  1230. pascal ComponentResult MCGetClip(MovieController mc, RgnHandle *theClip, RgnHandle *movieClip)
  1231. = {0x2f3c,8,41,0x7000,0xa82a};
  1232.  
  1233. pascal ComponentResult MCDrawBadge(MovieController mc, RgnHandle movieRgn, RgnHandle *badgeRgn)
  1234. = {0x2f3c,8,42,0x7000,0xa82a};
  1235.  
  1236. #ifdef __cplusplus
  1237. }
  1238. #endif
  1239. enum {
  1240.  
  1241.  
  1242. /* movie controller error codes */
  1243.  cannotMoveAttachedController = -9999,
  1244.  controllerHasFixedHeight = -9998,
  1245.  cannotSetWidthOfAttachedController = -9997,
  1246.  controllerBoundsNotExact = -9996,
  1247.  editingNotAllowed = -9995,
  1248.  badControllerHeight = -9994
  1249. };
  1250.  
  1251.  
  1252. #endif
  1253.